Development of an Online Game Engine

Planning & architecture notes for a web-based 3D engine.

This project aims to create a robust online 3D game engine using the Go programming language. The engine will focus on allowing users to create high-quality graphics through the online environment while emphasizing performance and modularity.

Project Overview

This project aims to create a robust online 3D game engine using the Go programming language. The engine will focus on allowing users to create high-quality graphics through the online environment.

Planning Steps

  1. Research existing game engines and their architectures.
  2. Define the core features and functionalities of this engine and what sets it apart.
  3. Define the MVP (Minimum Viable Product) for the initial release.
  4. Create a project timeline with milestones for development phases.
  5. Separate key features into distinct modules for easier development and testing.
  6. Set up a version control system to manage code changes and collaboration. (This is already done through Github)
  7. Develop a prototype to test core functionalities and gather feedback.
  8. Iterate on the design and functionality based on testing and feedback.
  9. Prepare documentation for users and developers.
  10. Plan for future updates and feature additions post-launch.

Research on Existing Engines

Before starting development, I researched several existing game engines to understand their architectures and features. Notable engines include:

  • Unity: Known for its user-friendly interface and extensive asset store.
  • Unreal Engine: Renowned for high-fidelity graphics and robust toolset.
  • Godot: Open-source engine with a strong community and flexible scripting.

These engines provided valuable insights into common features and design patterns that I could incorporate into my own engine. In particular, I noted the importance of modularity, user accessibility, and performance optimization. I also liked the way that Godot leans so strongly into its own structural design patterns (e.g. Everything is a Node and can be interacted with as such), which is something I want to explore further in my engine. I noted that many engines provide a node based system for shader creation and visual effects, but I want to explore a more code-centric approach that still provides visual feedback. My reasoning behind this is that I want to focus on performance and optimization, which can and are often hindered by visual scripting systems.

Defining Core Features

My engine is aimed at solving two problems: development environments are extremely expensive, especially in today's market, and many existing engines are highly unoptimized when it comes to graphics programming. This engine will focus on providing a free, web-based platform for users to create high-quality graphics while also ensuring that the engine is optimized for performance. In particular, I want to focus on the following core features:

  • Web-based interface for easy access and collaboration.
  • Support for advanced graphics techniques (e.g., PBR, real-time lighting).
  • Provided filters for visual effects and post-processing.
  • Modular architecture for easy extension and customization.
  • Optimized rendering pipeline for high performance.
  • Comprehensive documentation and tutorials for users.
  • Export options for Windows, macOS, and Linux.

A note on the use of AI within the engine: No LLM-based code generation features will be included within the engine, as this would go against the principles of performance and optimization that I am trying to achieve in both the actual engine itself and the user-created projects.

Project Timeline

The project will be divided into several phases, each with specific milestones:

  • Phase 1: Core architecture and basic rendering pipeline (3 months)
  • Phase 2: Advanced graphics features and UI components (3 months)
  • Phase 3: Optimization and performance tuning (3 months)
  • Phase 4: Documentation and tutorials (2 months)

This timeline is flexible and may be adjusted based on development progress and feedback. These phases are cut into smaller milestones, which I will release as they are finished. In addition, each of these phases will include multiple testing and iteration cycles to ensure quality and usability.

Version Control and Collaboration

I will use Git and GitHub for version control to manage code changes and facilitate collaboration. This will allow me to track progress, manage branches for different features, and collaborate with any potential contributors. However, at least for the initial development phase, I will be the sole developer on this project.

Prototype Development

The initial prototype will focus on implementing the core rendering pipeline and basic UI components. This prototype will serve as a proof of concept and will be used to gather feedback from potential users. Feedback will be iterated upon to refine the engine's design and functionality.

Documentation and Future Planning

Once the engine reaches a stable state in which no features are likely to undergo any major changes, Comprehensive documentation will be provided to assist users in getting started and utilizing the engine's features. This documentation will include tutorials, API references, and best practices for graphics programming within the engine. Post-launch, I plan to continue updating the engine with new features and improvements based on user-feedback over time.